package org.sgr.money.manager.biz;

import java.util.ArrayList;
import java.util.List;

import org.sgr.money.manager.dto.SubjectDto;
import org.sgr.money.manager.service.SubjectService;
import org.sgr.money.manager.service.impl.SubjectServiceImpl;
import org.sgr.money.manager.util.MgrUtil;

public class SubjectBiz {

	private SubjectService subjectService = new SubjectServiceImpl();

	public List<SubjectDto> getAllSubjectTree() {

		List<SubjectDto> listSubjectDto = subjectService.getAllSubject();
		List<SubjectDto> subjectTreeArry = getTree(listSubjectDto, null);
		return subjectTreeArry;
	}

	private static List<SubjectDto> getTree(List<SubjectDto> listSubjectDto, Long pidL) {

		List<SubjectDto> returnLstDto = new ArrayList<SubjectDto>();
		if (listSubjectDto != null && listSubjectDto.size() > 0) {
			// 取数组中的第一个父节点为pidL的节点，在数组中删除这个对象
			// for (SubjectDto subjectDto : listSubjectDto) {
			int j = listSubjectDto.size();
			for (int i = 0; i < j; i++) {
				if (i > listSubjectDto.size()) {
					continue;
				}
				SubjectDto subjectDto = listSubjectDto.get(i);
				if (subjectDto.isSorted()) {
					continue;
				} else {
					if (MgrUtil.equal(subjectDto.getSummarySubCode(), pidL)) {
						// 加入树
						returnLstDto.add(subjectDto);
						// 标识状态
						subjectDto.setSorted(true);
						
						List<SubjectDto> tmpLstDto = getTree(listSubjectDto, subjectDto.getSubCode());
						returnLstDto.addAll(tmpLstDto);
					}
				}
			}
		}
		return returnLstDto;
	}
}
